<html>
<title>Brick & Blast interface moteur Cpp - Lua</title>
<body>
<h1>Présentation</h1>
Ce document présente les services exposés par le moteur C++ aux scripts
Lua.<br/>
Les services exposés ne doivent pas avoir de contrainte de temps réel fortes
<br/> et ne pas être sujets aux tricheries des joueurs malicieux<br/>
(exemple, alteration du moteur de jeu par modification des paramètres
 physiques). Néanmoins, la triche peut être largement limitée grâce au<br/>
système de signature de paquet pour la validation des scores en ligne.

<h1>Famille de services</h1>
Dans cette section on expose les familles de services et le pourquoi ils sont
exposés en Lua plutôt qu'en C++.

<h2>GUIServices</h2>
Contient tout ce qui concerne les menus de configuration du jeu, d'aide, etc.
Cela donne une grande souplesse pour réorganiser les menus, changer leur contenu
(corrections, traductions, évolutions). Il est aussi plus pratique de faire cela
en Lua qu'en C++.

<h2>StatusPanelServices</h2>
Contient les interactions avec les panneaux des vies et des options. La logique
est plus facilement gérable côté Lua.

<h2>LCDPanelServices</h2>
Contient les services d'interaction avec le panneau d'affichage "LCD" (en
    réalité c'est une immitation). L'affichage des messages peut être asynchrone
et devenir vite casse-tête à réaliser en C++. Cela suppose que Lua puisse
interagir de façon asynchrone avec le moteur, tout en restant dans le thread
principal (politique de thread d'affichage unique).

<h2>BallEventServices</h2>
Contient les services de gestion des événements provoqués par la balle en
collision avec les divers objets de l'espace de jeu.

<h2>FileSystemServices</h2>
Contient les services d'accès au système de fichier, au sens large :
vérification de la présence de certains fichiers, chargement dynamique de
niveaux, de fichiers de score, etc.

<h2>GameFlowServices</h2>
Contient la logique d'enchaînement des différents écrans du jeu.

</body>
</html>
